// the very first line should be kept as a comment to avoid unexpected commenting when embedding the script into the HTML
Object.defineProperty(window, 'l10n', {
  value: new function () {
    const tokenSerializationRe = /[^a-z0-9]/g;

    /**
     * @param {string} token
     * @return {string}
     */
    const tkn = function (token) {
      return token.toLowerCase().replaceAll(tokenSerializationRe, '');
    };

    /**
     * Each **key** should be in English (this is the default/main locale).
     *
     * @link https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes language codes list (column `Set 1` or `ISO 639-1:2002`)
     *
     * @type {Map<string, Map<'fr'|'ru'|'uk'|'pt'|'nl'|'de'|'es'|'zh'|'id'|'pl'|'ko'|'hu'|'no'|'ro'|'it', string>>}
     */
    const data = Object.freeze(new Map([
      [tkn('Error'), new Map([
        ['fr', 'Erreur'],
        ['ru', 'Ошибка'],
        ['uk', 'Помилка'],
        ['pt', 'Erro'],
        ['nl', 'Fout'],
        ['de', 'Fehler'],
        ['es', 'Error'],
        ['zh', '错误'],
        ['id', 'Kesalahan'],
        ['pl', 'Błąd'],
        ['ko', '오류'],
        ['hu', 'Hiba'],
        ['no', 'Feil'],
        ['ro', 'Eroare'],
        ['it', 'Errore'],
      ])],
      [tkn('Good luck'), new Map([
        ['fr', 'Bonne chance'],
        ['ru', 'Удачи'],
        ['uk', 'Успіхів'],
        ['pt', 'Boa sorte'],
        ['nl', 'Veel succes'],
        ['de', 'Viel Glück'],
        ['es', 'Buena Suerte'],
        ['zh', '祝好运'],
        ['id', 'Semoga berhasil!'],
        ['pl', 'Powodzenia'],
        ['ko', '행운을 빌어요'],
        ['hu', 'Sok szerencsét'],
        ['no', 'Lykke til'],
        ['ro', 'Noroc'],
        ['it', 'Buona fortuna'],
      ])],
      [tkn('UH OH'), new Map([
        ['fr', 'Oups'],
        ['ru', 'Ох'],
        ['uk', 'Упс'],
        ['pt', 'Ops'],
        ['nl', 'Oeps'],
        ['de', 'Hoppla'],
        ['es', 'Uy'],
        ['zh', '哎呀'],
        ['id', 'Ups'],
        ['pl', 'Ojej'],
        ['ko', '헉'],
        ['hu', 'Jaj ne'],
        ['no', 'Ops'],
        ['ro', 'Hopa'],
        ['it', 'Oops'],
      ])],
      [tkn('Request details'), new Map([
        ['fr', 'Détails de la requête'],
        ['ru', 'Детали запроса'],
        ['uk', 'Деталі запиту'],
        ['pt', 'Detalhes da solicitação'],
        ['nl', 'Details van verzoek'],
        ['de', 'Details der Anfrage'],
        ['es', 'Detalles de la petición'],
        ['zh', '请求详情'],
        ['id', 'Rincian permintaan'],
        ['pl', 'Poproś o szczegóły'],
        ['ko', '요청 세부사항'],
        ['hu', 'Kérelem adatai'],
        ['no', 'Forespørselsdetaljer'],
        ['ro', 'Solicită detalii'],
        ['it', 'Dettagli della richiesta'],
      ])],
      [tkn('Double-check the URL'), new Map([
        ['fr', 'Vérifiez l’URL'],
        ['ru', 'Дважды проверьте URL'],
        ['uk', 'Двічі перевіряйте URL-адресу'],
        ['pt', 'Verifique novamente a URL'],
        ['nl', 'Controleer de URL'],
        ['de', 'Überprüfen Sie die URL'],
        ['es', 'Verifique la url'],
        ['zh', '请再次检查地址'],
        ['id', 'Periksa URL'],
        ['pl', 'Sprawdź adres URL'],
        ['ko', 'URL을 다시 확인하세요'],
        ['hu', 'Ellenőrizze le az URL-t'],
        ['no', 'Dobbeltsjekk URL-en'],
        ['ro', 'Verifică URL-ul'],
        ['it', 'Ricontrolla l\'URL'],
      ])],
      [tkn('Alternatively, go back'), new Map([
        ['fr', 'Essayez de revenir en arrière'],
        ['ru', 'Или можете вернуться назад'],
        ['uk', 'Або можете повернутися назад'],
        ['pt', "Como alternativa, tente voltar"],
        ['nl', 'Of ga terug'],
        ['de', 'Alternativ gehen Sie zurück'],
        ['es', 'Como alternativa, vuelva atrás'],
        ['zh', '或返回上一页'],
        ['id', 'Atau, kembali'],
        ['pl', 'Alternatywnie wróć'],
        ['ko', '혹은, 돌아가기'],
        ['hu', 'Alternatív megoldásként térjen vissza'],
        ['no', 'Alternativt, gå tilbake'],
        ['ro', 'Sau, întorceți-vă'],
        ['it', 'In alternativa, torna indietro'],
      ])],
      [tkn("Here's what might have happened"), new Map([
        ['fr', 'Voici ce qui aurait pu se passer'],
        ['ru', 'Из-за чего это могло случиться'],
        ['uk', 'Ось що могло трапитися'],
        ['pt', 'Aqui está o que pode ter acontecido'],
        ['nl', 'Wat er gebeurd kan zijn'],
        ['de', 'Folgendes könnte passiert sein'],
        ['es', 'Esto es lo que ha podido pasar'],
        ['zh', '可能原因有'],
        ['id', 'Inilah yang bisa saja terjadi'],
        ['pl', 'Oto, co mogło się wydarzyć'],
        ['ko', '다음이 발생했을 수 있어요'],
        ['hu', 'Ez történhetett'],
        ['no', 'Dette kan ha skjedd'],
        ['ro', 'Iată ce s-ar fi putut întâmpla'],
        ['it', 'Ecco cosa potrebbe essere successo'],
      ])],
      [tkn('You may have mistyped the URL'), new Map([
        ['fr', 'Vous avez peut-être mal tapé l’URL'],
        ['ru', 'Вы могли ошибиться в URL'],
        ['uk', 'Ви могли помилитися в URL-адресі'],
        ['pt', 'Você pode ter digitado incorretamente a URL'],
        ['nl', 'De URL bevat een typefout'],
        ['de', 'Möglicherweise haben Sie die URL falsch eingegeben'],
        ['es', 'Quizá ha escrito mal la URL'],
        ['zh', '您可能输入了错误的地址'],
        ['id', 'Anda mungkin tersalah memasukkan URL'],
        ['pl', 'Być może błędnie wpisałeś adres URL'],
        ['ko', 'URL을 잘못 입력하셨을 수 있어요'],
        ['hu', 'Valószínűleg elgépelte az URL-t'],
        ['no', 'Du kan ha skrevet feil URL'],
        ['ro', 'Este posibil să fi introdus greșit adresa URL'],
        ['it', 'Potresti aver digitato male l\'URL'],
      ])],
      [tkn('The site was moved'), new Map([
        ['fr', 'Le site a été déplacé'],
        ['ru', 'Сайт был перемещён'],
        ['uk', 'Сайт був переміщений'],
        ['pt', 'O site foi movido'],
        ['nl', 'De site is verplaatst'],
        ['de', 'Die Seite wurde verschoben'],
        ['es', 'El sitio se ha trasladado'],
        ['zh', '站点已被转移'],
        ['id', 'Halaman dipindahkan'],
        ['pl', 'Witryna została przeniesiona'],
        ['ko', '사이트가 이동했어요'],
        ['hu', 'Az oldal átköltözött'],
        ['no', 'Siden ble flyttet'],
        ['ro', 'Site-ul a fost mutat'],
        ['it', 'Il sito è stato spostato'],
      ])],
      [tkn('It was never here'), new Map([
        ['fr', 'Il n’a jamais été ici'],
        ['ru', 'Он никогда не был здесь'],
        ['uk', 'Він ніколи не був тут'],
        ['pt', 'Nunca esteve aqui'],
        ['nl', 'Het was hier nooit'],
        ['de', 'Es war nie hier'],
        ['es', 'Nunca ha estado aquí'],
        ['zh', '站点从未存在'],
        ['id', 'Itu Tidak pernah di sini'],
        ['pl', 'Nigdy jej nie było'],
        ['ko', '여기에 있던 적이 없어요'],
        ['hu', 'Soha nem is volt itt'],
        ['no', 'Den var aldri her'],
        ['ro', 'Nu a fost niciodată aici'],
        ['it', 'Non è mai stato qui'],
      ])],
      [tkn('Bad Request'), new Map([
        ['fr', 'Mauvaise requête'],
        ['ru', 'Некорректный запрос'],
        ['uk', 'Хибний запит'],
        ['pt', 'Requisição inválida'],
        ['nl', 'Foutieve anvraag'],
        ['de', 'Fehlerhafte Anfrage'],
        ['es', 'Petición inválida'],
        ['zh', '错误请求'],
        ['id', 'Permintaan yang salah'],
        ['pl', 'Nieprawidłowe żądanie'],
        ['ko', '잘못된 요청'],
        ['hu', 'Hibás kérés'],
        ['no', 'Dårlig forespørsel'],
        ['ro', 'Cerere greșită'],
        ['it', 'Richiesta non valida'],
      ])],
      [tkn('The server did not understand the request'), new Map([
        ['fr', 'Le serveur ne comprend pas la requête'],
        ['ru', 'Сервер не смог обработать запрос из-за ошибки в нём'],
        ['uk', 'Сервер не зміг обробити запит через помилку в ньому'],
        ['pt', 'O servidor não entendeu a solicitação'],
        ['nl', 'De server begreep het verzoek niet'],
        ['de', 'Der Server hat die Anfrage nicht verstanden'],
        ['es', 'El servidor no entendió la petición'],
        ['zh', '服务器不理解该请求'],
        ['id', 'Server tidak memahami permintaan'],
        ['pl', 'Serwer nie zrozumiał żądania'],
        ['ko', '서버가 요청을 이해하지 못했어요'],
        ['hu', 'A szerver nem értette a kérést'],
        ['no', 'Serveren forsto ikke forespørselen'],
        ['ro', 'Serverul nu a înțeles solicitarea'],
        ['it', 'Il server non ha capito la richiesta'],
      ])],
      [tkn('Unauthorized'), new Map([
        ['fr', 'Non autorisé'],
        ['ru', 'Запрос не авторизован'],
        ['uk', 'Несанкціонований доступ'],
        ['pt', 'Não autorizado'],
        ['nl', 'Niet geautoriseerd'],
        ['de', 'Nicht autorisiert'],
        ['es', 'No autorizado'],
        ['zh', '未经授权'],
        ['id', 'Tidak diotorisasi'],
        ['pl', 'Nieautoryzowany'],
        ['ko', '권한 없음'],
        ['hu', 'Nincs felhatalmazás'],
        ['no', 'Ingen tilgang'],
        ['ro', 'Neautorizat'],
        ['it', 'Non autorizzato'],
      ])],
      [tkn('The requested page needs a username and a password'), new Map([
        ['fr', 'La page demandée nécessite un nom d’utilisateur et un mot de passe'],
        ['ru', 'Для доступа к странице требуется логин и пароль'],
        ['uk', 'Щоб отримати доступ до сторінки, потрібний логін та пароль'],
        ['pt', 'A página solicitada precisa de um nome de usuário e uma senha'],
        ['nl', 'De pagina heeft een gebruikersnaam en wachtwoord nodig'],
        ['de', 'Die angeforderte Seite benötigt einen Benutzernamen und ein Passwort'],
        ['es', 'La página solicitada necesita un usuario y una contraseña'],
        ['zh', '请求的页面需要用户名和密码'],
        ['id', 'Halaman yang diminta membutuhkan nama pengguna dan kata sandi'],
        ['pl', 'Żądana strona wymaga podania nazwy użytkownika i hasła'],
        ['ko', '요청하신 페이지에는 사용자 이름과 비밀번호가 필요해요'],
        ['hu', 'A kért oldalhoz felhasználónév és jelszó szükséges'],
        ['no', 'Siden krever brukernavn og passord'],
        ['ro', 'Pagina solicitată necesită un nume de utilizator și o parolă'],
        ['it', 'La pagina richiesta richiede un nome utente e una password'],
      ])],
      [tkn('Forbidden'), new Map([
        ['fr', 'Interdit'],
        ['ru', 'Запрещено'],
        ['uk', 'Заборонено'],
        ['pt', 'Proibido'],
        ['nl', 'Verboden'],
        ['de', 'Verboten'],
        ['es', 'Prohibido'],
        ['zh', '禁止访问'],
        ['id', 'Dilarang'],
        ['pl', 'Zabroniony'],
        ['ko', '금지됨'],
        ['hu', 'Tiltott'],
        ['no', 'Ikke tillatt'],
        ['ro', 'Interzis'],
        ['it', 'Vietato'],
      ])],
      [tkn('Access is forbidden to the requested page'), new Map([
        ['fr', 'Accès interdit à la page demandée'],
        ['ru', 'Доступ к странице запрещён'],
        ['uk', 'Доступ до сторінки заборонено'],
        ['pt', 'É proibido o acesso à página solicitada'],
        ['nl', 'Toegang tot de pagina is verboden'],
        ['de', 'Der Zugriff auf die angeforderte Seite ist verboten'],
        ['es', 'El acceso está prohibido para la página solicitada'],
        ['zh', '禁止访问请求的页面'],
        ['id', 'Akses dilarang ke halaman yang diminta'],
        ['pl', 'Dostęp do żądanej strony jest zabroniony'],
        ['ko', '요청하신 페이지에 대한 접근이 금지되어 있어요'],
        ['hu', 'A kért oldalhoz a hozzáférés tilos'],
        ['no', 'Tilgang til den forespurte siden er forbudt'],
        ['ro', 'Accesul la pagina solicitată este interzis'],
        ['it', 'L\'accesso alla pagina richiesta è vietato'],
      ])],
      [tkn('Not Found'), new Map([
        ['fr', 'Introuvable'],
        ['ru', 'Страница не найдена'],
        ['uk', 'Сторінку не знайдено'],
        ['pt', 'Não encontrado'],
        ['nl', 'Niet gevonden'],
        ['de', 'Nicht gefunden'],
        ['es', 'No encontrado'],
        ['zh', '未找到'],
        ['id', 'Tidak ditemukan'],
        ['pl', 'Nie znaleziono'],
        ['ko', '찾을 수 없음'],
        ['hu', 'Nem található'],
        ['no', 'Ikke funnet'],
        ['ro', 'Nu a fost găsit'],
        ['it', 'Non trovato'],
      ])],
      [tkn('The server can not find the requested page'), new Map([
        ['fr', 'Le serveur ne peut trouver la page demandée'],
        ['ru', 'Сервер не смог найти запрашиваемую страницу'],
        ['uk', 'Сервер не зміг знайти запитану сторінку'],
        ['pt', 'O servidor não consegue encontrar a página solicitada'],
        ['nl', 'De server kan de pagina niet vinden'],
        ['de', 'Der Server kann die angeforderte Seite nicht finden'],
        ['es', 'El servidor no puede encontrar la página solicitada'],
        ['zh', '服务器找不到请求的页面'],
        ['id', 'Server tidak dapat menemukan halaman yang diminta'],
        ['pl', 'Serwer nie może znaleźć żądanej strony'],
        ['ko', '서버가 요청한 페이지를 찾을 수 없어요'],
        ['hu', 'A szerver nem találja a kért oldalt'],
        ['no', 'Serveren kan ikke finne den forespurte siden'],
        ['ro', 'Serverul nu poate găsi pagina solicitată'],
        ['it', 'Il server non riesce a trovare la pagina richiesta'],
      ])],
      [tkn('Method Not Allowed'), new Map([
        ['fr', 'Méthode Non Autorisée'],
        ['ru', 'Метод не поддерживается'],
        ['uk', 'Неприпустимий метод'],
        ['pt', 'Método não permitido'],
        ['nl', 'Methode niet toegestaan'],
        ['de', 'Methode nicht erlaubt'],
        ['es', 'Método no permitido'],
        ['zh', '方法不被允许'],
        ['id', 'Metode tidak diizinkan'],
        ['pl', 'Niedozwolona metoda'],
        ['ko', '허용되지 않은 메소드'],
        ['hu', 'Tiltott metódus'],
        ['no', 'Metoden er ikke tillatt'],
        ['ro', 'Metoda nu este permisă'],
        ['it', 'Metodo non consentito'],
      ])],
      [tkn('The method specified in the request is not allowed'), new Map([
        ['fr', 'La méthode spécifiée dans la requête n’est pas autorisée'],
        ['ru', 'Указанный в запросе метод не поддерживается'],
        ['uk', 'Метод, зазначений у запиті, не підтримується'],
        ['pt', 'O método especificado na solicitação não é permitido'],
        ['nl', 'De methode in het verzoek is niet toegestaan'],
        ['de', 'Die in der Anfrage angegebene Methode ist nicht zulässig'],
        ['es', 'El método especificado en la petición no está permitido'],
        ['zh', '请求指定的方法不被允许'],
        ['id', 'Metode dalam permintaan tidak diizinkan'],
        ['pl', 'Metoda określona w żądaniu jest niedozwolona'],
        ['ko', '요청에 사용한 메소드는 허용되지 않아요'],
        ['hu', 'A kérésben megadott metódus nem engedélyezett'],
        ['no', 'Metoden som er angitt i forespørselen er ikke tillatt'],
        ['ro', 'Metoda specificată în cerere nu este permisă'],
        ['it', 'Il metodo specificato nella richiesta non è consentito'],
      ])],
      [tkn('Proxy Authentication Required'), new Map([
        ['fr', 'Authentification proxy requise'],
        ['ru', 'Нужна аутентификация прокси'],
        ['uk', 'Потрібна ідентифікація проксі'],
        ['pt', 'Autenticação de proxy necessária'],
        ['nl', 'Authenticatie op de proxyserver verplicht'],
        ['de', 'Proxy-Authentifizierung benötigt'],
        ['es', 'Autenticación de proxy requerida'],
        ['zh', '需要代理服务器身份验证'],
        ['id', 'Diperlukan otentikasi proxy'],
        ['pl', 'Wymagane uwierzytelnianie proxy'],
        ['ko', '프록시 인증 필요'],
        ['hu', 'Proxy hitelesítés szükséges'],
        ['no', 'Proxy-autentisering kreves'],
        ['ro', 'Autentificare Proxy Necesară'],
        ['it', 'Autenticazione proxy richiesta'],
      ])],
      [tkn('You must authenticate with a proxy server before this request can be served'), new Map([
        ['fr', 'Vous devez vous authentifier avec un serveur proxy avant que cette requête puisse être servie'],
        ['ru', 'Вы должны быть авторизованы на прокси сервере для обработки этого запроса'],
        ['uk', 'Ви повинні увійти до проксі-сервера для обробки цього запиту'],
        ['pt', 'Você deve se autenticar com um servidor proxy antes que esta solicitação possa ser atendida'],
        ['nl', 'Je moet authenticeren bij een proxyserver voordat dit verzoek uitgevoerd kan worden'],
        ['de', 'Sie müssen sich bei einem Proxy-Server authentifizieren, bevor diese Anfrage bedient werden kann'],
        ['es', 'Debes autentificarte con un servidor proxy antes de que esta petición pueda ser atendida'],
        ['zh', '您必须对代理服务器进行身份验证，然后才能让请求得到处理'],
        ['id', 'Anda harus mengautentikasi dengan server proxy sebelum permintaan ini dapat dilayani'],
        ['pl', 'Musisz uwierzytelnić się na serwerze proxy, zanim to żądanie będzie mogło zostać obsłużone'],
        ['ko', '이 요청을 처리하려면 프록시 서버로 인증해야 해요'],
        ['hu', 'Hitelesítenie kell magát egy proxy szerverrel, mielőtt ez a kérés kiszolgálható lenne'],
        ['no', 'Du må autentisere deg med en proxy-server før denne forespørselen kan behandles'],
        ['ro', 'Trebuie să vă autentificați cu un server proxy înainte ca această solicitare să poată fi procesată'],
        ['it', 'Devi autenticarti con un server proxy prima che questa richiesta possa essere servita'],
      ])],
      [tkn('Request Timeout'), new Map([
        ['fr', 'Requête expirée'],
        ['ru', 'Истекло время ожидания'],
        ['uk', 'Вичерпано час очікування'],
        ['pt', 'Tempo limite de solicitação excedido'],
        ['nl', 'Aanvraagtijd verstreken'],
        ['de', 'Zeitüberschreitung der Anforderung'],
        ['es', 'Tiempo límite de la petición excedido'],
        ['zh', '请求超时'],
        ['id', 'Meminta batas waktu'],
        ['pl', 'Przekroczenie limitu czasu żądania'],
        ['ko', '요청 시간초과'],
        ['hu', 'Kérés időtúllépés'],
        ['no', 'Forespørsel tidsavbrutt'],
        ['ro', 'Solicitare Timeout'],
        ['it', 'Timeout della richiesta'],
      ])],
      [tkn('The request took longer than the server was prepared to wait'), new Map([
        ['fr', 'La requête prend plus de temps que prévu'],
        ['ru', 'Отправка запроса заняла слишком много времени'],
        ['uk', 'Надсилання запиту зайняло надто багато часу'],
        ['pt', 'A solicitação demorou mais do que o servidor estava preparado para esperar'],
        ['nl', 'Het verzoek duurde langer dan de server wilde wachten'],
        ['de', 'Die Anfrage hat länger gedauert, als der Server bereit war zu warten'],
        ['es', 'La petición esta tardando más de lo que el servidor estaba preparado para esperar'],
        ['zh', '请求用时超过了服务器设置的最长等待时间'],
        ['id', 'Permintaan memakan waktu lebih lama dari yang bisa ditunggu oleh server'],
        ['pl', 'Żądanie trwało dłużej niż serwer był gotowy czekać'],
        ['ko', '요청이 서버가 기다릴 수 있는 시간보다 오래 걸렸어요'],
        ['hu', 'A kérés tovább tartott, mint amennyit a szerver hajlandó volt várni'],
        ['no', 'Forespørselen tok lengre tid enn serveren var forberedt på å vente'],
        ['ro', 'Cererea a durat mai mult decât era pregătit serverul să aștepte'],
        ['it', 'La richiesta ha impiegato più tempo di quanto il server poteva aspettare'],
      ])],
      [tkn('Conflict'), new Map([
        ['fr', 'Conflit'],
        ['ru', 'Конфликт'],
        ['uk', 'Конфлікт'],
        ['pt', 'Conflito'],
        ['nl', 'Conflict'],
        ['de', 'Konflikt'],
        ['es', 'Conflicto'],
        ['zh', '冲突'],
        ['id', 'Konflik'],
        ['pl', 'Konflikt'],
        ['ko', '상충'],
        ['hu', 'Ütközés'],
        ['no', 'Konflikt'],
        ['ro', 'Conflict'],
        ['it', 'Conflitto'],
      ])],
      [tkn('The request could not be completed because of a conflict'), new Map([
        ['fr', 'La requête n’a pas pu être complétée à cause d’un conflit'],
        ['ru', 'Запрос не может быть обработан из-за конфликта'],
        ['uk', 'Запит не може бути оброблений через конфлікт'],
        ['pt', 'A solicitação não pôde ser concluída devido a um conflito'],
        ['nl', 'Het verzoek kon niet worden verwerkt vanwege een conflict'],
        ['de', 'Die Anfrage konnte aufgrund eines Konflikts nicht abgeschlossen werden'],
        ['es', 'La petición no ha podido ser completada por un conflicto'],
        ['zh', '由于冲突，请求无法完成'],
        ['id', 'Permintaan tidak dapat diselesaikan karena adanya konflik'],
        ['pl', 'Żądanie nie mogło zostać wykonane z powodu konfliktu'],
        ['ko', '상충으로 인해 요청을 완료할 수 없었어요'],
        ['hu', 'A kérés nem fejezhető be ütközés miatt'],
        ['no', 'Forespørselen kunne ikke fullføres på grunn av en konflikt'],
        ['ro', 'Cererea nu a putut fi finalizată din cauza unui conflict'],
        ['it', 'La richiesta non può essere completata a causa di un conflitto'],
      ])],
      [tkn('Gone'), new Map([
        ['fr', 'Supprimé'],
        ['ru', 'Удалено'],
        ['uk', 'Вилучений'],
        ['pt', 'Removido'],
        ['nl', 'Verdwenen'],
        ['de', 'Verschwunden'],
        ['es', 'Eliminado'],
        ['zh', '已移除'],
        ['id', 'Menghilang'],
        ['pl', 'Usunięto'],
        ['ko', '사라짐'],
        ['hu', 'Vége/Elveszett'],
        ['no', 'Borte'],
        ['ro', 'Plecat'],
        ['it', 'Sparito'],
      ])],
      [tkn('The requested page is no longer available'), new Map([
        ['fr', 'La page demandée n’est plus disponible'],
        ['ru', 'Запрошенная страница была удалена'],
        ['uk', 'Запитувана сторінка більше не доступна'],
        ['pt', 'A página solicitada não está mais disponível'],
        ['nl', 'De pagina is niet langer beschikbaar'],
        ['de', 'Die angeforderte Seite ist nicht mehr verfügbar'],
        ['es', 'La página solicitada no está ya disponible'],
        ['zh', '请求的页面不再可用'],
        ['id', 'Halaman yang diminta tidak lagi tersedia'],
        ['pl', 'Żądana strona nie jest już dostępna'],
        ['ko', '요청하신 페이지는 더 이상 사용할 수 없어요'],
        ['hu', 'A kért oldal már nem érhető el'],
        ['no', 'Siden er ikke lenger tilgjengelig'],
        ['ro', 'Pagina solicitată nu mai este disponibilă'],
        ['it', 'La pagina richiesta non è più disponibile'],
      ])],
      [tkn('Length Required'), new Map([
        ['fr', 'Longueur requise'],
        ['ru', 'Необходима длина'],
        ['uk', 'Потрібно вказати довжину'],
        ['pt', 'Content-Length necessário'],
        ['nl', 'Lengte benodigd'],
        ['de', 'Länge benötigt'],
        ['es', 'Longitud requerida'],
        ['zh', '需要长度'],
        ['id', 'Panjang yang diperlukan'],
        ['pl', 'Wymagana długość'],
        ['ko', '길이 필요'],
        ['hu', 'Hossz megadása kötelező'],
        ['no', 'Lengde påkrevd'],
        ['ro', 'Lungimea necesară'],
        ['it', 'Lunghezza richiesta'],
      ])],
      [tkn('The "Content-Length" is not defined. The server will not accept the request without it'), new Map([
        ['fr', 'Le "Content-Length" n’est pas défini. Le serveur ne prendra pas en compte la requête'],
        ['ru', 'Заголовок "Content-Length" не был передан. Сервер не может обработать запрос без него'],
        ['uk', 'Заголовок "Content-Length" не був переданий. Сервер не може обробити запит без нього'],
        ['pt', 'O "Content-Length" não está definido. O servidor não aceitará a solicitação sem ele'],
        ['nl', 'De "Content-Length" is niet gespecificeerd. De server accepteert het verzoek niet zonder'],
        ['de', 'Die "Content-Length" ist nicht definiert. Ohne sie akzeptiert der Server die Anfrage nicht'],
        ['es', 'El "Content-Legth" no eta definido. Este servidor no aceptará la petición sin él'],
        ['zh', '未指定Content-Length(内容长度)。服务器将不接受不包含此头信息的请求'],
        ['id', '"Content-Length" tidak ditentukan. Server tidak akan menerima permintaan tanpa itu'],
        ['pl', 'Wartość "Content-Length" nie jest zdefiniowana. Serwer nie zaakceptuje żądania bez tego parametru'],
        ['ko', '"Content-Length"가 정의되지 않았습니다. 이 값이 없으면 서버는 요청을 수락하지 않아요'],
        ['hu', 'A "Content-Length" nincs meghatározva. A szerver nem fogadja el a kérést nélküle'],
        ['no', '"Content-Length" er ikke definert. Serveren vil ikke godta forespørselen uten den'],
        ['ro', '"Lungimea conținutului" nu este definită. Serverul nu va accepta solicitarea fără aceasta'],
        ['it', 'Il "Content-Length" non è definito. Il server non accetterà la richiesta senza di esso'],
      ])],
      [tkn('Precondition Failed'), new Map([
        ['fr', 'Échec de la condition préalable'],
        ['ru', 'Условие ложно'],
        ['uk', 'Збій під час обробки попередньої умови'],
        ['pt', 'Falha na pré-condição'],
        ['nl', 'Niet voldaan aan vooraf gestelde voorwaarde'],
        ['de', 'Vorbedingung fehlgeschlagen'],
        ['es', 'Precondición fallida'],
        ['zh', '前置条件判定失败'],
        ['id', 'Prasyarat gagal'],
        ['pl', 'Niespełnienie warunku wstępnego'],
        ['ko', '선결 조건 실패'],
        ['hu', 'Előfeltétel sikertelen'],
        ['no', 'Forutsetning mislyktes'],
        ['ro', 'Condiție preliminară eșuată'],
        ['it', 'Condizioni preliminari fallite'],
      ])],
      [tkn('The pre condition given in the request evaluated to false by the server'), new Map([
        ['fr', 'La précondition donnée dans la requête a été évaluée comme étant fausse par le serveur'],
        ['ru', 'Ни одно из условных полей заголовка запроса не было выполнено'],
        ['uk', 'Жодна з передумов запиту не була виконана'],
        ['pt', 'A pré-condição dada na solicitação avaliada como falsa pelo servidor'],
        ['nl', 'De vooraf gestelde voorwaarde is afgewezen door de server'],
        ['de', 'Die in der Anfrage angegebene Vorbedingung wird vom Server als falsch bewertet'],
        ['es', 'La precondición ha sido evaluada como negativa para esta petición por el servidor'],
        ['zh', '服务器评估请求中给出的前置条件的结果为false(假)'],
        ['id', 'Prakondisi gagal'],
        ['pl', 'Warunek wstępny podany w żądaniu został oceniony przez serwer jako nieprawidłowy'],
        ['ko', '요청에 제공된 선결 조건을 서버는 거짓으로 평가했어요'],
        ['hu', 'A kérésben megadott előfeltétel a szerver által hamisnak minősült'],
        ['no', 'Forutsetningen gitt i forespørselen ble vurdert som usann av serveren'],
        ['ro', 'Precondiția dată în cerere a fost evaluată ca falsă de către server'],
        ['it', 'La condizione preliminare data nella richiesta è stata valutata come falsa dal server'],
      ])],
      [tkn('Payload Too Large'), new Map([
        ['fr', 'Charge trop volumineuse'],
        ['ru', 'Слишком большой запрос'],
        ['uk', 'Занадто великий запит'],
        ['pt', 'Payload muito grande'],
        ['nl', 'Aanvraag te grood'],
        ['de', 'Anfrage zu groß'],
        ['es', 'Carga demasiado grande'],
        ['zh', '请求体过大'],
        ['id', 'Muatan terlalu besar'],
        ['pl', 'Żądanie jest zbyt duże'],
        ['ko', '콘텐츠가 너무 큼'],
        ['hu', 'Túl nagy adatmennyiség'],
        ['no', 'Forespørselen er for stor'],
        ['ro', 'Payload Prea Mare'],
        ['it', 'Payload troppo grande'],
      ])],
      [tkn('The server will not accept the request, because the request entity is too large'), new Map([
        ['fr', 'Le serveur ne prendra pas en compte la requête, car l’entité de la requête est trop volumineuse'],
        ['ru', 'Сервер не может обработать запрос, так как он слишком большой'],
        ['uk', 'Сервер не може обробити запит, оскільки він занадто великий'],
        ['pt', 'O servidor não aceitará a solicitação porque a entidade da solicitação é muito grande'],
        ['nl', 'De server accepteert het verzoek niet omdat de aanvraag te groot is'],
        ['de', 'Der Server akzeptiert die Anfrage nicht, da die Datenmenge zu groß ist'],
        ['es', 'El servidor no aceptará esta petición, porque la carga es demasiado grande'],
        ['zh', '请求体过大，服务器将不接受该请求'],
        ['id', 'Server tidak akan menerima permintaan, karena entitas permintaan terlalu besar'],
        ['pl', 'Serwer nie zaakceptuje żądania, ponieważ żądanie jest zbyt duże'],
        ['ko', '요청 엔터티가 너무 크기 때문에 서버가 요청을 수락하지 않았어요'],
        ['hu', 'A szerver nem fogadja el a kérést, mert a kérés entitása túl nagy'],
        ['no', 'Serveren vil ikke godta forespørselen, fordi forespørselsentiteten er for stor'],
        ['ro', 'Serverul nu va accepta cererea, deoarece entitatea cererii este prea mare'],
        ['it', 'Il server non accetterà la richiesta, perché l\'entità della richiesta è troppo grande'],
      ])],
      [tkn('Requested Range Not Satisfiable'), new Map([
        ['fr', 'Plage requêtée non satisfaisable'],
        ['ru', 'Диапазон не достижим'],
        ['uk', 'Запитуваний діапазон недосяжний'],
        ['pt', 'Intervalo Solicitado Não Satisfatório'],
        ['nl', 'Aangevraagd gedeelte niet opvraagbaar'],
        ['de', 'Anfrage-Bereich nicht erfüllbar'],
        ['es', 'Intervalo solicitado no satisfactorio'],
        ['zh', '不满足请求范围'],
        ['id', 'Rentang yang diminta tidak dapat dipenuhi'],
        ['pl', 'Żądany zakres nie jest satysfakcjonujący'],
        ['ko', '처리할 수 없는 요청 범위'],
        ['hu', 'Kért tartomány nem teljesíthető'],
        ['no', 'Forespurt område ikke tilfredsstillende'],
        ['ro', 'Intervalul Solicitat Nu este Satisfăcător'],
        ['it', 'Intervallo richiesto non soddisfacibile'],
      ])],
      [tkn('The requested byte range is not available and is out of bounds'), new Map([
        ['fr', 'Le byte range demandé n’est pas disponible et est hors des limites'],
        ['ru', 'Запрошенный диапазон данных недоступен или вне допустимых пределов'],
        ['uk', 'Описаний діапазон даних недоступний або поза допустимими межами'],
        ['pt', 'O intervalo de bytes solicitado não está disponível e está fora dos limites'],
        ['nl', 'De aangevraagde bytes zijn buiten het limiet'],
        ['de', 'Der angefragte Teilbereich der Ressource existiert nicht oder ist ungültig'],
        ['es', 'El intervalo de bytes requerido no está disponible o se encuentra fuera de los límites'],
        ['zh', '请求的字节范围不可用，超出边界'],
        ['id', 'Rentang byte yang diminta tidak tersedia dan di luar batas'],
        ['pl', 'Żądany zakres bajtów nie jest dostępny i znajduje się poza zakresem'],
        ['ko', '요청한 범위를 사용할 수 없고, 범위를 벗어났어요'],
        ['hu', 'A kért bájt tartomány nem érhető el, és kívül esik a határokon'],
        ['no', 'Det forespurte byte-området er ikke tilgjengelig og er utenfor grensene'],
        ['ro', 'Intervalul de octeți solicitat nu este disponibil și este în afara limitelor'],
        ['it', 'L\'intervallo di byte richiesto non è disponibile ed è fuori dai limiti'],
      ])],
      [tkn("I'm a teapot"), new Map([
        ['fr', 'Je suis une théière'],
        ['ru', 'Я чайник'],
        ['uk', 'Я чайник'],
        ['pt', 'Eu sou um bule'],
        ['nl', 'Ik ben een theepot'],
        ['de', 'Ich bin eine Teekanne'],
        ['es', 'Soy una tetera'],
        ['zh', '我是一只茶壶'],
        ['id', 'Saya adalah teko'],
        ['pl', 'Jestem czajniczkiem'],
        ['ko', '저는 찻주전자에요'],
        ['hu', 'Én egy teáskanna vagyok'],
        ['no', 'Jeg er en tekanne'],
        ['ro', 'Sunt un ceainic'],
        ['it', 'Sono una teiera'],
      ])],
      [tkn('Attempt to brew coffee with a teapot is not supported'), new Map([
        ['fr', 'Tenter de préparer du café avec une théière n’est pas pris en charge'],
        ['ru', 'Попытка заварить кофе в чайнике обречена на фиаско'],
        ['uk', 'Спроба заварити каву в чайнику приречена на фіаско'],
        ['pt', 'A tentativa de preparar café com um bule não é suportada'],
        ['nl', 'Koffie maken met een theepot is niet ondersteund'],
        ['de', 'Der Versuch, Kaffee mit einer Teekanne zuzubereiten, wird nicht unterstützt'],
        ['es', 'Intentar hacer un café en una tetera no está soportado'],
        ['zh', '用茶壶泡咖啡不受支持'],
        ['id', 'Upaya menyeduh kopi dengan teko tidak didukung'],
        ['pl', 'Próba zaparzenia kawy za pomocą czajniczka nie jest obsługiwana'],
        ['ko', '찻주전자로 커피를 내리는 시도는 지원되지 않아요'],
        ['hu', 'Teáskannával kávét főzni nem támogatott'],
        ['no', 'Forsøk på å brygge kaffe med en tekanne støttes ikke'],
        ['ro', 'Încercarea de a prepara cafea cu un ceainic nu este acceptată'],
        ['it', 'Tentare di fare il caffè con una teiera non è supportato'],
      ])],
      [tkn('Too Many Requests'), new Map([
        ['fr', 'Trop de requêtes'],
        ['ru', 'Слишком много запросов'],
        ['uk', 'Занадто багато запитів'],
        ['pt', 'Excesso de solicitações'],
        ['nl', 'Te veel requests'],
        ['de', 'Zu viele Anfragen'],
        ['es', 'Demasiadas peticiones'],
        ['zh', '请求过多'],
        ['id', 'Terlalu banyak permintaan'],
        ['pl', 'Zbyt wiele żądań'],
        ['ko', '요청이 너무 많음'],
        ['hu', 'Túl sok kérés'],
        ['no', 'For mange forespørsler'],
        ['ro', 'Prea Multe Cereri'],
        ['it', 'Troppe Richieste'],
      ])],
      [tkn('Too many requests in a given amount of time'), new Map([
        ['fr', 'Trop de requêtes dans un délai donné'],
        ['ru', 'Отправлено слишком много запросов за короткое время'],
        ['uk', 'Надіслано занадто багато запитів за короткий проміжок час'],
        ['pt', 'Excesso de solicitações em um determinado período de tempo'],
        ['nl', 'Te veel verzoeken binnen een bepaalde tijd'],
        ['de', 'Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet'],
        ['es', 'Demasiadas peticiones en un determinado periodo de tiempo'],
        ['zh', '在给定的时间内发送了过多请求'],
        ['id', 'Terlalu banyak permintaan dalam waktu tertentu'],
        ['pl', 'Zbyt wiele żądań w określonym czasie'],
        ['ko', '지정된 시간 내에 요청이 너무 많아요'],
        ['hu', 'Túl sok kérés egy adott időn belül'],
        ['no', 'For mange forespørsler i løpet av en gitt tidsperiode'],
        ['ro', 'Prea multe solicitări într-un interval de timp dat'],
        ['it', 'Troppe richieste in un determinato periodo di tempo'],
      ])],
      [tkn('Internal Server Error'), new Map([
        ['fr', 'Erreur interne du serveur'],
        ['ru', 'Внутренняя ошибка сервера'],
        ['uk', 'Внутрішня помилка сервера'],
        ['pt', 'Erro do Servidor Interno'],
        ['nl', 'Interne serverfout'],
        ['de', 'Interner Server-Fehler'],
        ['es', 'Error Interno'],
        ['zh', '内部服务器错误'],
        ['id', 'Kesalahan server internal'],
        ['pl', 'Wewnętrzny błąd serwera'],
        ['ko', '내부 서버 오류'],
        ['hu', 'Belső szerverhiba'],
        ['no', 'Intern serverfeil'],
        ['ro', 'Internal Server Error'],
        ['it', 'Errore interno del server'],
      ])],
      [tkn('The server met an unexpected condition'), new Map([
        ['fr', 'Le serveur a rencontré une condition inattendue'],
        ['ru', 'Произошло что-то неожиданное на сервере'],
        ['uk', 'На сервері відбулось щось неочікуване'],
        ['pt', 'O servidor encontrou uma condição inesperada'],
        ['nl', 'De server ondervond een onverwachte conditie'],
        ['de', 'Der Server hat einen internen Fehler festgestellt'],
        ['es', 'El servidor ha encontrado una condición no esperada'],
        ['zh', '服务器遇到了意外情况'],
        ['id', 'Server mengalami kondisi yang tidak terduga'],
        ['pl', 'Serwer napotkał nieoczekiwany stan'],
        ['ko', '서버가 예상치 못한 조건이에요'],
        ['hu', 'A szerver váratlan hibát észlelt'],
        ['no', 'Serveren møtte en uventet tilstand'],
        ['ro', 'Serverul a îndeplinit o condiție neașteptată'],
        ['it', 'Il server ha incontrato una condizione imprevista'],
      ])],
      [tkn('Bad Gateway'), new Map([
        ['fr', 'Mauvaise passerelle'],
        ['ru', 'Ошибка шлюза'],
        ['uk', 'Помилка шлюзу'],
        ['pt', 'Gateway inválido'],
        ['nl', 'Ongeldige Gateway'],
        ['de', 'Fehlerhaftes Gateway'],
        ['es', 'Puerta de enlace no valida'],
        ['zh', '无效网关'],
        ['id', 'Gateway yang buruk'],
        ['pl', 'Błąd bramki'],
        ['ko', '게이트웨이 불량'],
        ['hu', 'Hibás átjáró'],
        ['no', 'Ugyldig gateway'],
        ['ro', 'Gateway Invalid'],
        ['it', 'Gateway non valido'],
      ])],
      [tkn('The server received an invalid response from the upstream server'), new Map([
        ['fr', 'Le serveur a reçu une réponse invalide du serveur distant'],
        ['ru', 'Сервер получил некорректный ответ от вышестоящего сервера'],
        ['uk', 'Сервер отримав невірну відповідь від попереднього сервера'],
        ['pt', 'O servidor recebeu uma resposta inválida do servidor upstream'],
        ['nl', 'De server ontving een ongeldig antwoord van een bovenliggende server'],
        ['de', 'Der Server hat eine ungültige Antwort vom Upstream-Server erhalten'],
        ['es', 'El servidor ha recibido una respuesta no válida del servidor de origen'],
        ['zh', '服务器从上游服务器收到了无效的响应'],
        ['id', 'Server menerima respons yang tidak valid dari server induk'],
        ['pl', 'Serwer otrzymał nieprawidłową odpowiedź od serwera nadrzędnego'],
        ['ko', '게이트웨이가 업스트림 서버로부터 잘못된 응답을 받았어요'],
        ['hu', 'A szerver érvénytelen választ kapott a felsőbb szintű szervertől'],
        ['no', 'Serveren mottok en ugyldig respons fra oppstrømsserveren'],
        ['ro', 'Serverul a primit un răspuns nevalid de la serverul din amonte'],
        ['it', 'Il server ha ricevuto una risposta non valida dal server upstream'],
      ])],
      [tkn('Service Unavailable'), new Map([
        ['fr', 'Service indisponible'],
        ['ru', 'Сервис недоступен'],
        ['uk', 'Сервіс недоступний'],
        ['pt', 'Serviço não disponível'],
        ['nl', 'Dienst niet beschikbaar'],
        ['de', 'Dienst nicht verfügbar'],
        ['es', 'Servicio no disponible'],
        ['zh', '服务不可用'],
        ['id', 'Layanan tidak tersedia'],
        ['pl', 'Serwis niedostępny'],
        ['ko', '서비스 불가능'],
        ['hu', 'Szolgáltatás nem elérhető'],
        ['no', 'Tjenesten er utilgjengelig'],
        ['ro', 'Serviciu Indisponibil'],
        ['it', 'Servizio non disponibile'],
      ])],
      [tkn('The server is temporarily overloading or down'), new Map([
        ['fr', 'Le serveur est temporairement en surcharge ou indisponible'],
        ['ru', 'Сервер временно не может обрабатывать запросы по техническим причинам'],
        ['uk', 'Сервер тимчасово не може обробляти запити з технічних причин'],
        ['pt', 'O servidor está temporariamente sobrecarregado ou inativo'],
        ['nl', 'De server is tijdelijk overbelast of niet bereikbaar'],
        ['de', 'Der Server ist vorübergehend überlastet oder ausgefallen'],
        ['es', 'El servidor está temporalmente sobrecargado o inactivo'],
        ['zh', '服务器暂时过载或不可用'],
        ['id', 'Server untuk sementara kelebihan beban atau tidak tersedia'],
        ['pl', 'Serwer jest tymczasowo przeciążony lub wyłączony'],
        ['ko', '서버가 일시적으로 과부하 상태이거나 다운되었어요'],
        ['hu', 'A szerver ideiglenesen túlterhelt vagy nem működik'],
        ['no', 'Serveren er midlertidig overbelastet eller nede'],
        ['ro', 'Serverul este temporar supraîncărcat sau nefuncțional'],
        ['it', 'Il server è temporaneamente sovraccarico o inattivo'],
      ])],
      [tkn('Gateway Timeout'), new Map([
        ['fr', 'Expiration Passerelle'],
        ['ru', 'Шлюз не отвечает'],
        ['uk', 'Шлюз не відповідає'],
        ['pt', 'Tempo limite do gateway excedido'],
        ['nl', 'Gateway Verlopen'],
        ['de', 'Gateway Zeitüberschreitung'],
        ['es', 'Tiempo límite de puerta de enlace excedido'],
        ['zh', '网关超时'],
        ['id', 'Batas waktu gateway'],
        ['pl', 'Przekroczenie limitu czasu bramki'],
        ['ko', '게이트웨이 시간초과'],
        ['hu', 'Átjáró időtúllépés'],
        ['no', 'Gateway-tiden er utløpt'],
        ['ro', 'Gateway Timeout'],
        ['it', 'Timeout del gateway'],
      ])],
      [tkn('The gateway has timed out'), new Map([
        ['fr', 'Le temps d’attente de la passerelle est dépassé'],
        ['ru', 'Сервер не дождался ответа от вышестоящего сервера'],
        ['uk', 'У шлюзу закінчився час очікування'],
        ['pt', 'O gateway esgotou o tempo limite'],
        ['nl', 'De verbinding naar de bovenliggende server is verlopen'],
        ['de', 'Das Zeitlimit für den Verbindungsaufbau mit dem Upstream-Server ist abgelaufen'],
        ['es', 'La puerta de enlace ha sobrepasado el tiempo límite'],
        ['zh', '网关响应已经超时'],
        ['id', 'Sambungan ke server induk telah kedaluwarsa'],
        ['pl', 'Bramka przekroczyła limit czasu'],
        ['ko', '게이트웨이 시간이 초과되었어요'],
        ['hu', 'Az átjáró időtúllépésbe ütközött'],
        ['no', 'Gateway-tiden er utløpt'],
        ['ro', 'Gateway-ul a expirat'],
        ['it', 'Il gateway ha raggiunto il timeout'],
      ])],
      [tkn('HTTP Version Not Supported'), new Map([
        ['fr', 'Version HTTP non prise en charge'],
        ['ru', 'Версия HTTP не поддерживается'],
        ['uk', 'Версія НТТР не підтримується'],
        ['pt', 'Versão HTTP não suportada'],
        ['nl', 'HTTP-versie wordt niet ondersteunt'],
        ['de', 'HTTP-Version wird nicht unterstützt'],
        ['es', 'Versión de HTTP no soportada'],
        ['zh', 'HTTP版本不受支持'],
        ['id', 'Versi HTTP tidak didukung'],
        ['pl', 'Wersja HTTP nie jest obsługiwana'],
        ['ko', '지원하지 않는 HTTP 버전'],
        ['hu', 'Nem támogatott HTTP verzió'],
        ['no', 'HTTP-versjonen støttes ikke'],
        ['ro', 'Versiunea HTTP Nu este Suportată'],
        ['it', 'Versione HTTP non supportata'],
      ])],
      [tkn('The server does not support the "http protocol" version'), new Map([
        ['fr', 'Le serveur ne supporte pas la version du protocole HTTP'],
        ['ru', 'Сервер не поддерживает запрошенную версию HTTP протокола'],
        ['uk', 'Сервер не підтримує запитану версію HTTP-протоколу'],
        ['pt', 'O servidor não suporta a versão do protocolo HTTP'],
        ['nl', 'De server ondersteunt deze HTTP-versie niet'],
        ['de', 'Der Server unterstützt die HTTP-Protokoll-Version nicht'],
        ['es', 'El servidor no soporta la versión del protocolo HTTP'],
        ['zh', '服务器不支持该HTTP协议版本'],
        ['id', 'Server tidak mendukung versi HTTP ini'],
        ['pl', 'Serwer nie obsługuje wersji "protokołu http"'],
        ['ko', '서버가 해당 "HTTP 프로토콜"을 지원하지 않아요'],
        ['hu', 'A szerver nem támogatja a megadott "http protokoll" verziót'],
        ['no', 'Serveren støtter ikke "http-protokoll" versjonen'],
        ['ro', 'Serverul nu acceptă versiunea "protocolului http"'],
        ['it', 'Il server non supporta la versione del protocollo "http"'],
      ])],
      [tkn('Host'), new Map([
        ['fr', 'Hôte'],
        ['ru', 'Хост'],
        ['uk', 'Хост'],
        ['pt', 'Hospedeiro'],
        ['nl', 'Host'],
        ['de', 'Host'],
        ['es', 'Host'],
        ['zh', '主机'],
        ['id', 'Host'],
        ['pl', 'Host'],
        ['ko', '호스트'],
        ['hu', 'Gazdagép'],
        ['no', 'Vert'],
        ['ro', 'Gazdă'],
        ['it', 'Host'],
      ])],
      [tkn('Original URI'), new Map([
        ['fr', 'URI d’origine'],
        ['ru', 'Исходный URI'],
        ['uk', 'Вихідний URI'],
        ['pt', 'URI original'],
        ['nl', 'Originele URI'],
        ['de', 'Originale URI'],
        ['es', 'URI original'],
        ['zh', '原始URI'],
        ['id', 'URL asli'],
        ['pl', 'Oryginalny URI'],
        ['ko', '원시 URI'],
        ['hu', 'Eredeti URI'],
        ['no', 'Opprinnelig URI'],
        ['ro', 'URI Original'],
        ['it', 'URI originale'],
      ])],
      [tkn('Forwarded for'), new Map([
        ['fr', 'Transmis pour'],
        ['ru', 'Перенаправлен'],
        ['uk', 'Перенаправлений'],
        ['pt', 'Encaminhado para'],
        ['nl', 'Doorgestuurd voor'],
        ['de', 'Weitergeleitet für'],
        ['es', 'Remitido para'],
        ['zh', '转发自'],
        ['id', 'Diteruskan untuk'],
        ['pl', 'Przekazane do'],
        ['ko', '전달받은 대상'],
        ['hu', 'Továbbítva részére'],
        ['no', 'Viderekoblet for'],
        ['ro', 'Redirecţionat pentru'],
        ['it', 'Inoltrato per'],
      ])],
      [tkn('Namespace'), new Map([
        ['fr', 'Espace de noms'],
        ['ru', 'Пространство имён'],
        ['uk', 'Простір імен'],
        ['pt', 'Namespace'],
        ['nl', 'Elementnaam'],
        ['de', 'Namensraum'],
        ['es', 'Namespace'],
        ['zh', '命名空间'],
        ['id', 'Ruang nama'],
        ['pl', 'Przestrzeń nazw'],
        ['ko', '네임스페이스'],
        ['hu', 'Névtér'],
        ['no', 'Navnerom'],
        ['ro', 'Spațiu de nume'],
        ['it', 'Namespace'],
      ])],
      [tkn('Ingress name'), new Map([
        ['fr', 'Nom ingress'],
        ['ru', 'Имя Ingress'],
        ['uk', "Ім'я входу"],
        ['pt', 'Nome Ingress'],
        ['nl', 'Ingress naam'],
        ['de', 'Ingress Name'],
        ['es', 'Nombre Ingress'],
        ['zh', '入口名'],
        ['id', 'Nama ingress'],
        ['pl', 'Nazwa wejścia'],
        ['ko', '인그레스 이름'],
        ['hu', 'Bejövő név'],
        ['no', 'Ingress navn'],
        ['ro', 'Nume ingress'],
        ['it', 'Ingress name'],
      ])],
      [tkn('Service name'), new Map([
        ['fr', 'Nom du service'],
        ['ru', 'Имя сервиса'],
        ['uk', "Ім'я сервісу"],
        ['pt', 'Nome do Serviço'],
        ['nl', 'Service naam'],
        ['de', 'Service Name'],
        ['es', 'Nombre del servicio'],
        ['zh', '服务名'],
        ['id', 'Nama layanan'],
        ['pl', 'Nazwa usługi'],
        ['ko', '서비스 이름'],
        ['hu', 'Szolgáltatás neve'],
        ['no', 'Tjenestenavn'],
        ['ro', 'Nume serviciu'],
        ['it', 'Nome servizio'],
      ])],
      [tkn('Service port'), new Map([
        ['fr', 'Port du service'],
        ['ru', 'Порт сервиса'],
        ['uk', 'Порт сервісу'],
        ['pt', 'Porta do serviço'],
        ['nl', 'Service poort'],
        ['de', 'Service Port'],
        ['es', 'Puerto del servicio'],
        ['zh', '服务端口'],
        ['id', 'Port layanan'],
        ['pl', 'Port usługi'],
        ['ko', '서비스 포트'],
        ['hu', 'Szolgáltatás portja'],
        ['no', 'Tjenesteport'],
        ['ro', 'Port de serviciu'],
        ['it', 'Porta del servizio'],
      ])],
      [tkn('Request ID'), new Map([
        ['fr', 'Identifiant de la requête'],
        ['ru', 'ID запроса'],
        ['uk', 'ID запиту'],
        ['pt', 'ID da solicitação'],
        ['nl', 'ID van het verzoek'],
        ['de', 'Anfrage ID'],
        ['es', 'ID de la petición'],
        ['zh', '请求ID'],
        ['id', 'ID permintaan'],
        ['pl', 'Identyfikator żądania'],
        ['ko', '요청 ID'],
        ['hu', 'Kérés azonosító'],
        ['no', 'Forespørsels-ID'],
        ['ro', 'Solicită ID'],
        ['it', 'ID richiesta'],
      ])],
      [tkn('Timestamp'), new Map([
        ['fr', 'Horodatage'],
        ['ru', 'Временная метка'],
        ['uk', 'Мітка часу'],
        ['pt', 'Timestamp'],
        ['nl', 'Tijdstempel'],
        ['de', 'Zeitstempel'],
        ['es', 'Timestamp'],
        ['zh', '时间戳'],
        ['id', 'Cap waktu'],
        ['pl', 'Sygnatura czasowa'],
        ['ko', '시간 기록'],
        ['hu', 'Időbélyeg'],
        ['no', 'Tidsstempel'],
        ['ro', 'Marcă temporală'],
        ['it', 'Timestamp'],
      ])],
      [tkn('client-side error'), new Map([
        ['fr', 'Erreur Client'],
        ['ru', 'ошибка на стороне клиента'],
        ['uk', 'помилка на стороні клієнта'],
        ['pt', 'erro do lado do cliente'],
        ['nl', 'fout aan de gebruikerskant'],
        ['de', 'Clientseitiger Fehler'],
        ['es', 'Error del lado del cliente'],
        ['zh', '客户端错误'],
        ['id', 'Kesalahan sisi klien'],
        ['pl', 'błąd po stronie klienta'],
        ['ko', '클라이언트 측 오류'],
        ['hu', 'kliens oldali hiba'],
        ['no', 'klientfeil'],
        ['ro', 'eroare la nivelul clientului'],
        ['it', 'errore lato client'],
      ])],
      [tkn('server-side error'), new Map([
        ['fr', 'Erreur Serveur'],
        ['ru', 'ошибка на стороне сервера'],
        ['uk', 'помилка на стороні сервера'],
        ['pt', 'erro do lado do servidor'],
        ['nl', 'fout aan de serverkant'],
        ['de', 'Serverseitiger Fehler'],
        ['es', 'Error del lado del servidor'],
        ['zh', '服务端错误'],
        ['id', 'Kesalahan sisi server'],
        ['pl', 'błąd po stronie serwera'],
        ['ko', '서버 측 오류'],
        ['hu', 'szerver oldali hiba'],
        ['no', 'serverfeil'],
        ['ro', 'eroare pe partea serverului'],
        ['it', 'errore lato server'],
      ])],
      [tkn('Your Client'), new Map([
        ['fr', 'Votre Client'],
        ['ru', 'Ваш Браузер'],
        ['uk', 'Ваш Браузер'],
        ['pt', 'Seu Cliente'],
        ['nl', 'Jouw Client'],
        ['de', 'Ihr Client'],
        ['es', 'Tu Cliente'],
        ['zh', '您的客户端'],
        ['id', 'Klien Anda'],
        ['pl', 'Klient'],
        ['ko', '내 클라이언트'],
        ['hu', 'Az Ön kliense'],
        ['no', 'Din klient'],
        ['ro', 'Clientul Dvs'],
        ['it', 'Il tuo client'],
      ])],
      [tkn('Network'), new Map([
        ['fr', 'Réseau'],
        ['ru', 'Сеть'],
        ['uk', 'Мережа'],
        ['pt', 'Rede'],
        ['nl', 'Netwerk'],
        ['de', 'Netzwerk'],
        ['es', 'Red'],
        ['zh', '网络'],
        ['id', 'Jaringan'],
        ['pl', 'Sieć'],
        ['ko', '네트워크'],
        ['hu', 'Hálózat'],
        ['no', 'Nettverk'],
        ['ro', 'Reţea'],
        ['it', 'Rete'],
      ])],
      [tkn('Web Server'), new Map([
        ['fr', 'Serveur Web'],
        ['ru', 'Web Сервер'],
        ['uk', 'Web-сервер'],
        ['pt', 'Servidor web'],
        ['nl', 'Web Server'],
        ['de', 'Webserver'],
        ['es', 'Servidor Web'],
        ['zh', 'Web服务器'],
        ['id', 'Server web'],
        ['pl', 'Serwer WWW'],
        ['ko', '웹 서버'],
        ['hu', 'Webszerver'],
        ['no', 'Webserver'],
        ['ro', 'Server Web'],
        ['it', 'Server web'],
      ])],
      [tkn('What happened?'), new Map([
        ['fr', 'Que s’est-il passé ?'],
        ['ru', 'Что произошло?'],
        ['uk', 'Що сталося?'],
        ['pt', 'O que aconteceu?'],
        ['nl', 'Wat is er gebeurd?'],
        ['de', 'Was ist passiert?'],
        ['es', '¿Que ha pasado?'],
        ['zh', '发生了什么？'],
        ['id', 'Apa yang terjadi?'],
        ['pl', 'Co się stało?'],
        ['ko', '어떤 일이 일어났나요?'],
        ['hu', 'Mi történt?'],
        ['no', 'Hva skjedde?'],
        ['ro', 'Ce s-a întâmplat?'],
        ['it', 'Cosa è successo?'],
      ])],
      [tkn('What can I do?'), new Map([
        ['fr', 'Que puis-je faire ?'],
        ['ru', 'Что можно сделать?'],
        ['uk', 'Що можна зробити?'],
        ['pt', 'O que eu posso fazer?'],
        ['nl', 'Wat kan ik doen?'],
        ['de', 'Was kann ich machen?'],
        ['es', '¿Que puedo hacer?'],
        ['zh', '我能做什么？'],
        ['id', 'Apa yang bisa saya lakukan?'],
        ['pl', 'Co mogę zrobić?'],
        ['ko', '어떤 것을 할 수 있나요?'],
        ['hu', 'Mit tehetek?'],
        ['no', 'Hva kan jeg gjøre?'],
        ['ro', 'Ce pot face?'],
        ['it', 'Cosa posso fare?'],
      ])],
      [tkn('Please try again in a few minutes'), new Map([
        ['fr', 'Veuillez réessayer dans quelques minutes'],
        ['ru', 'Пожалуйста, попробуйте повторить запрос ещё раз чуть позже'],
        ['uk', 'Будь ласка, спробуйте повторити запит ще раз трохи пізніше'],
        ['pt', 'Por favor, tente novamente em alguns minutos'],
        ['nl', 'Probeer het alstublieft opnieuw over een paar minuten'],
        ['de', 'Bitte versuchen Sie es in ein paar Minuten erneut'],
        ['es', 'Por favor, intente nuevamente en unos minutos'],
        ['zh', '请在几分钟后重试'],
        ['id', 'Silakan coba lagi dalam beberapa menit'],
        ['pl', 'Spróbuj ponownie za kilka minut'],
        ['ko', '몇 분 후에 다시 시도해 주세요'],
        ['hu', 'Kérjük, próbálja meg újra néhány perc múlva'],
        ['no', 'Vennligst prøv igjen om noen minutter'],
        ['ro', 'Vă rugăm să încercați din nou peste câteva minute'],
        ['it', 'Riprova tra qualche minuto'],
      ])],
      [tkn('Working'), new Map([
        ['fr', 'Opérationnel'],
        ['ru', 'Работает'],
        ['uk', 'Працює'],
        ['pt', 'Funcionando'],
        ['nl', 'Functioneel'],
        ['de', 'Funktioniert'],
        ['es', 'Funcionando'],
        ['zh', '正常运行'],
        ['id', 'Fungsi'],
        ['pl', 'Działa'],
        ['ko', '작동 중'],
        ['hu', 'Működik'],
        ['no', 'Fungerer'],
        ['ro', 'Lucru'],
        ['it', 'Funzionante'],
      ])],
      [tkn('Unknown'), new Map([
        ['fr', 'Inconnu'],
        ['ru', 'Неизвестно'],
        ['uk', 'Невідомо'],
        ['pt', 'Desconhecido'],
        ['nl', 'Onbekend'],
        ['de', 'Unbekannt'],
        ['es', 'Desconocido'],
        ['zh', '未知'],
        ['id', 'Tidak diketahui'],
        ['pl', 'Nieznany'],
        ['ko', '알 수 없음'],
        ['hu', 'Ismeretlen'],
        ['no', 'Ukjent'],
        ['ro', 'Necunoscut'],
        ['it', 'Sconosciuto'],
      ])],
      [tkn('Please try to change the request method, headers, payload, or URL'), new Map([
        ['fr', 'Veuillez essayer de changer la méthode de requête, les en-têtes, le contenu ou l’URL'],
        ['ru', 'Пожалуйста, попробуйте изменить метод запроса, заголовки, его содержимое или URL'],
        ['uk', 'Будь ласка, спробуйте змінити метод запиту, заголовки, його вміст або URL-адресу'],
        ['pt', 'Tente alterar o método de solicitação, cabeçalhos, payload ou URL'],
        ['nl', 'Probeer het opnieuw met een andere methode, headers, payload of URL'],
        ['de', 'Bitte versuchen Sie, die Anfragemethode, Header, Payload oder URL zu ändern'],
        ['es', 'Por favor intente cambiar el método de la petición, cabeceras, carga o URL'],
        ['zh', '请尝试更改请求方法、标头、有效负载或URL'],
        ['id', 'Coba lagi dengan metode, header, muatan, atau URL yang berbeda'],
        ['pl', 'Spróbuj zmienić metodę żądania, nagłówki, żądanie lub adres URL'],
        ['ko', '요청 방법, 헤더, 콘텐츠 또는 URL을 변경해 보세요'],
        ['hu', 'Kérjük, próbálja meg módosítani a kérés metódusát, fejléceit, tartalmát vagy URL-jét'],
        ['no', 'Vennligst prøv å endre forespørselsmetode, overskrifter, nyttelast eller URL'],
        ['ro', 'Vă rugăm să încercați să schimbați metoda de solicitare, anteturile, sarcina utilă sau adresa URL'],
        ['it', 'Prova a cambiare il metodo di richiesta, gli header, il payload o l\'URL'],
      ])],
      [tkn('Please check your authorization data'), new Map([
        ['fr', 'Veuillez vérifier vos données d’autorisation'],
        ['ru', 'Пожалуйста, проверьте данные авторизации'],
        ['uk', 'Будь ласка, перевірте дані авторизації'],
        ['pt', 'Verifique seus dados de autorização'],
        ['nl', 'Controleer de authenticatiegegevens'],
        ['de', 'Bitte überprüfen Sie Ihre Zugangsdaten'],
        ['es', 'Verifique sus datos de autorización'],
        ['zh', '请检查您的授权数据'],
        ['id', 'Memeriksa detail autentikasi'],
        ['pl', 'Sprawdź swoje dane autoryzacyjne'],
        ['ko', '인증 데이터를 확인해주세요'],
        ['hu', 'Kérjük, ellenőrizze hitelesítési adatait'],
        ['no', 'Vennligst sjekk autorisasjonsdataene dine'],
        ['ro', 'Vă rugăm să verificați datele dumneavoastră de autorizare'],
        ['it', 'Controlla i tuoi dati di autorizzazione'],
      ])],
      [tkn('Please double-check the URL and try again'), new Map([
        ['fr', 'Veuillez vérifier l’URL et réessayer'],
        ['ru', 'Пожалуйста, дважды проверьте URL и попробуйте снова'],
        ['uk', 'Будь ласка, двічі перевірте URL-адресу і спробуйте знову'],
        ['pt', 'Verifique novamente o URL e tente novamente'],
        ['nl', 'Controleer de URL en probeer het opnieuw'],
        ['de', 'Bitte überprüfen Sie die URL und versuchen Sie es erneut'],
        ['es', 'Verifique de nuevo la URL y vuelva a probar'],
        ['zh', '请再次检查URL并重试'],
        ['id', 'Periksa URL dan coba lagi'],
        ['pl', 'Sprawdź adres URL i spróbuj ponownie'],
        ['ko', 'URL을 다시 한번 확인해 주세요'],
        ['hu', 'Kérjük, ellenőrizze le még egyszer az URL-t és próbálja újra'],
        ['no', 'Vennligst dobbeltsjekk URL-en og prøv igjen'],
        ['ro', 'Vă rugăm să verificați adresa URL și să încercați din nou'],
        ['it', 'Ricontrolla l\'URL e riprova'],
      ])],
      [tkn('My Computer'), new Map([
        ['fr', 'Poste de travail'],
        ['ru', 'Мой компьютер'],
        ['uk', 'Мій комп’ютер'],
        ['pt', 'Meu computador'],
        ['nl', 'Deze computer'],
        ['de', 'Arbeitsplatz'],
        ['es', 'Mi PC'],
        ['zh', '我的电脑'],
        ['id', 'Komputer Saya'],
        ['pl', 'Mój komputer'],
        ['ko', '내 컴퓨터'],
        ['hu', 'Sajátgép'],
        ['no', 'Min datamaskin'],
        ['ro', 'Computerul Meu'],
        ['it', 'Il mio computer'],
      ])],
      [tkn('My Documents'), new Map([
        ['fr', 'Mes documents'],
        ['ru', 'Мои документы'],
        ['uk', 'Мої документи'],
        ['pt', 'Meus documentos'],
        ['nl', 'Mijn documenten'],
        ['de', 'Eigene Dateien'],
        ['es', 'Mis documentos'],
        ['zh', '我的文档'],
        ['id', 'Dokumen Saya'],
        ['pl', 'Moje dokumenty'],
        ['ko', '내 문서'],
        ['hu', 'Saját dokumentumok'],
        ['no', 'Mine dokumenter'],
        ['ro', 'Documentele Mele'],
        ['it', 'I miei documenti'],
      ])],
      [tkn('Start'), new Map([
        ['fr', 'Démarrer'],
        ['ru', 'Пуск'],
        ['uk', 'Пуск'],
        ['pt', 'Iniciar'],
        ['nl', 'Start'],
        ['de', 'Start'],
        ['es', 'Inicio'],
        ['zh', '开始'],
        ['id', 'Mulai'],
        ['pl', 'Start'],
        ['ko', '시작'],
        ['hu', 'Start'],
        ['no', 'Start'],
        ['ro', 'Start'],
        ['it', 'Avvia'],
      ])],
    ]));

    // detect browser locale (take only 2 first symbols)
    let activeLocale = navigator.language.substring(0, 2).toLowerCase();

    // noinspection JSUnusedGlobalSymbols
    /**
     * @param {string} locale
     * @return {void}
     */
    this.setLocale = function (locale) {
      activeLocale = locale.toLowerCase();
    }

    /**
     * @param {string} token
     * @param {string?} def
     * @return {string|undefined}
     */
    this.translate = function (token, def) {
      const t = tkn(token);

      if (activeLocale === 'en' && Object.prototype.hasOwnProperty.call(data, t)) {
        return token;
      }

      if (data.has(t) && data.get(t).has(activeLocale)) {
        return data.get(t).get(activeLocale);
      }

      return def;
    };

    /**
     * Localize all elements with the HTML attribute `data-l10n`.
     * The attribute value is used as a token to translate.
     *
     * @return {void}
     */
    this.localizeDocument = function () {
      if (activeLocale === 'en') {
        return; // no need to translate
      }

      const l10nAttr = 'data-l10n'; // using this attribute we understand that this element should be localized
      const l10nOriginalTextAttr = 'data-l10n-original'; // to keep the original text

      // loop through all elements with the `data-l10n` attribute
      Array.prototype.forEach.call(document.querySelectorAll('[' + l10nAttr + ']'), ($el) => {
        if (!$el.hasAttribute(l10nAttr)) {
          return; // skip elements without the `data-l10n` attribute
        }

        // store the original text if not already stored
        if (!$el.hasAttribute(l10nOriginalTextAttr)) {
          $el.setAttribute(l10nOriginalTextAttr, $el.innerText);
        } else {
          $el.innerText = $el.getAttribute(l10nOriginalTextAttr); // restore the original text
        }

        const attr = $el.getAttribute(l10nAttr).trim(); // get the `data-l10n` attribute value
        const token = attr ? attr : $el.innerText.trim(); // use the attribute value as a token, or the element text
        const localized = this.translate(token); // translate the token

        if (localized) {
          $el.innerText = localized; // set the translated text
        } else {
          console.debug(`Unsupported l10n token detected: "${token}" (locale "${activeLocale}")`, $el);
        }
      });
    };
  },
  writable: false,
  enumerable: false,
});

window.l10n.localizeDocument();
